링크된 문서
Phone MCP
Phone MCP
Phone MCP는 AI 에이전트가 안드로이드 모바일 장치를 제어할 수 있게 해주는 강력한 Model Context Protocol(MCP) 서버입니다. 이 서버를 통해 LLM은 모바일 앱 실행, 화면 탐색, 텍스트 입력, 알림 관리, 전화 및 문자 메시지 전송 등 다양한 모바일 작업을 자동화할 수 있습니다. 물리적 장치 또는 에뮬레이터/시뮬레이터 환경에서 작동하며, UI 요소 인식과 스크린샷 기반 상호작용을 결합하여 복잡한 모바일 워크플로우를 자동화합니다.
특징
- 앱 관리: 앱 설치, 실행, 종료, 데이터 액세스 등 다양한 작업 지원
- UI 자동화: 화면 요소 탭, 스와이프, 텍스트 입력 등 UI 상호작용 자동화
- 스크린샷 분석: AI를 활용한 화면 요소 인식 및 상황 이해
- 알림 관리: 시스템 및 앱 알림 읽기, 응답, 관리
- 통신 기능: 전화 걸기, 문자 메시지 전송, 연락처 관리
- 위치 서비스: GPS 위치 조회 및 위치 기반 서비스 활용
- 복잡한 작업 흐름: 다단계 작업 시퀀스 자동화 지원
- 클로스 플랫폼: 물리적 장치 및 에뮬레이터/시뮬레이터 지원
- 접근성 호환: 접근성 서비스를 통한 강력한 장치 제어
API
도구
기기 및 앱 관리
- list_available_devices: 사용 가능한 장치 목록 조회
- 입력: 없음
-
출력: 연결된 장치 및 에뮬레이터 목록
-
use_device: 특정 장치 선택
- 입력: 장치 이름, 장치 유형(시뮬레이터, iOS, 안드로이드)
-
출력: 장치 연결 상태
-
list_apps: 설치된 앱 목록 조회
- 입력: 없음
-
출력: 설치된 앱 목록 및 패키지 이름
-
launch_app: 앱 실행
- 입력: 패키지 이름
-
출력: 앱 실행 상태
-
terminate_app: 앱 종료
- 입력: 패키지 이름
- 출력: 앱 종료 상태
화면 상호작용
- get_screen_size: 화면 크기 조회
- 입력: 없음
-
출력: 화면 너비 및 높이(픽셀)
-
click_on_screen_at_coordinates: 좌표 기반 화면 탭
- 입력: x좌표, y좌표
-
출력: 탭 동작 성공 여부
-
list_elements_on_screen: 화면의 요소 목록 조회
- 입력: 없음
-
출력: 화면에 표시된 요소, 좌표, 텍스트 정보
-
press_button: 장치 버튼 누르기
- 입력: 버튼 유형(BACK, HOME, VOLUME_UP, VOLUME_DOWN 등)
- 출력: 버튼 누름 성공 여부
웹 및 데이터
- open_url: 브라우저에서 URL 열기
- 입력: URL
-
출력: URL 열기 성공 여부
-
swipe_on_screen: 화면 스와이프
- 입력: 스와이프 방향(up, down)
-
출력: 스와이프 동작 성공 여부
-
type_keys: 텍스트 입력
- 입력: 입력할 텍스트, 제출 여부
- 출력: 텍스트 입력 성공 여부
화면 캡처 및 분석
- take_screenshot: 화면 캡처
- 입력: 없음
-
출력: 화면 이미지 데이터
-
set_orientation: 화면 방향 변경
- 입력: 방향(portrait, landscape)
-
출력: 방향 변경 성공 여부
-
get_orientation: 현재 화면 방향 조회
- 입력: 없음
- 출력: 현재 화면 방향
사용 방법
설치
# npm을 통한 설치
npm install -g phone-mcp
# 또는 Python 기반 구현
pip install mobile-mcp
구성
Claude Desktop에서 이 서버를 사용하려면 다음과 같이 설정합니다:
{
"mcpServers": {
"phone": {
"command": "npx",
"args": ["phone-mcp"],
"env": {
"ADB_PATH": "/path/to/adb", // 안드로이드 디버그 브리지 경로
"DEVICE_ID": "optional-specific-device-id" // 특정 장치 지정(선택적)
}
}
}
}
필요 조건
- 안드로이드 SDK: adb(Android Debug Bridge) 설치 필요
- USB 디버깅 활성화: 물리적 안드로이드 장치 연결 시 필요
- Node.js: v14 이상 (Node.js 구현의 경우)
- Python: 3.7 이상 (Python 구현의 경우)
- 에뮬레이터(선택적): Android Emulator 또는 유사한 도구
사용 예시
// 사용 가능한 장치 목록 조회
const devices = await list_available_devices();
console.log(`사용 가능한 장치: ${devices.length}개`);
// 특정 장치 선택
await use_device("Pixel_4_API_30", "simulator");
// 설치된 앱 목록 조회
const apps = await list_apps();
console.log(`설치된 앱 수: ${apps.length}개`);
// 날씨 앱 실행
await launch_app("com.google.android.weather");
// 화면 요소 분석
const elements = await list_elements_on_screen();
console.log(`화면에 ${elements.length}개의 요소가 있습니다.`);
// 특정 좌표 탭하기
await click_on_screen_at_coordinates(250, 400);
// 아래로 스와이프
await swipe_on_screen("down");
// 화면 캡처
const screenshot = await take_screenshot();
console.log("화면 캡처 완료");
// 브라우저에서 URL 열기
await open_url("https://www.example.com");
// 검색창에 텍스트 입력
await type_keys("날씨 예보", true);
// 홈 버튼 누르기
await press_button("HOME");
연결된 구성 요소
- Arduino - IoT 장치 제어와 모바일 연동
- mcp_weather - 모바일에서 날씨 정보 조회 및 알림 설정
- Everything Search - 모바일 장치의 파일 검색 및 관리